// pages/shoplist/shoplist.js
Page({
  data: {
    query: {},
    shopList: [], // 商铺列表数组
    page: 1, // 页码
    pageSize: 10, // 每页请求的数量
    total: 0, // 总条数
    isLoading: false // #1 表示未加载数据
  },
  onReady() {
    // 页面渲染完毕，设置标题
    wx.setNavigationBarTitle({
      title: decodeURIComponent(this.data.query.title),
    })
  },
  onLoad(options) {
    // 把接收到的数据设置到 data 里面
    // 目的是为了在 onReady 里面访问
    this.setData({
      query: options
    })
    this.getShopList()
  },
  getShopList(callback) {
    // #2 把 isLoading 设置 true，表示正在加载中
    this.setData({
      isLoading: true
    })
    // 请求之前开启 loading
    wx.showLoading({
      title: '加载中...',
    })
    wx.request({
      url: `https://applet-base-api-t.itheima.net/categories/${this.data.query.id}/shops`,
      method: 'GET',
      data: {
        _page: this.data.page,
        _limit: this.data.pageSize
      },
      success: (res) => {
        console.log(res)
        this.setData({
          // shopList: res.data
          // #2 合并数据
          shopList: [...this.data.shopList, ...res.data],
          total: res.header['X-Total-Count'] - 0
        })
      },
      complete: () => {
        wx.hideLoading()
        // #4 数据加载完毕后把 isLoading 置为 false
        this.setData({
          isLoading: false
        })
        // 调用传递过来的回调
        callback && callback()
      }
    })
  },
  onReachBottom() {
    // 优化：如果 page * pagesize >= 总条数，说明就没有下一页数据了，就不要往下进行发请求了
    if (this.data.page * this.data.pageSize >= this.data.total) return
    // #3 如果正在加载中，就 return
    if (this.data.isLoading) return
    // console.log('~~~~~~~~')
    // pagenum、pagesize、query...
    // 上拉触底的时候，加载下一页
    // 只需要改变查询条件的页码
    this.setData({
      page: this.data.page + 1
    })
    // 然后根据新的查询条件请求数据
    this.getShopList()
  },
  onPullDownRefresh() {
    // 下拉刷新：只不过是在重置数据之后重新请求一次数据罢了
    this.setData({
      page: 1,
      pageSize: 10,
      shopList: [],
      total: 0
    })
    // 这个请求是异步的
    this.getShopList(function() {
      // 数据请求完毕后才手动关闭下拉刷新
      wx.stopPullDownRefresh()
    })
    // wx.stopPullDownRefresh()
  }
})